package com.zh.common.entity;

import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;

/**
 * code is far away from bug with the animal protecting
 * ┏┓　　　┏┓
 * ┏┛┻━━━┛┻┓
 * ┃　　　　　　　┃
 * ┃　　　━　　　┃
 * ┃　┳┛　┗┳　┃
 * ┃　　　　　　　┃
 * ┃　　　┻　　　┃
 * ┃　　　　　　　┃
 * ┗━┓　　　┏━┛
 * 　　┃　　　┃神兽保佑
 * 　　┃　　　┃代码无BUG！
 * 　　┃　　　┗━━━┓
 * 　　┃　　　　　　　┣┓
 * 　　┃　　　　　　　┏┛
 * 　　┗┓┓┏━┳┓┏┛
 * 　　　┃┫┫　┃┫┫
 * 　　　┗┻┛　┗┻┛
 *
 * @Description: Response JSONResult for RESTful,封装返回JSON格式的数据
 * @Author: Li.HuiNeng
 * @Create in: 2019/8/13
 * @Version: 1.0.1
 */

@ApiModel(description = "返回信息体，JSON返回对象", parent = Result.class)
@Data
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class JSONResult<T> extends Result implements Serializable {

    private static final long serialVersionUID = 6414414337883700142L;
    @ApiModelProperty(value = "返回数据集", name = "data", example = "返回数据")
    private T data;

    @ApiModelProperty(value = "总页数", name = "total", example = "1")
    private Long total;


    /**
     * @Description: 默认构造函数
     * ------------------------
     * @Author: Li.HuiNeng
     * @Date: 2019/8/15
     */
    public JSONResult(){}
    /**
     * @Description: 自定义返回结果集
     * ------------------------
     * @Author: Li.HuiNeng
     * @Date: 2019/8/13
     */
    public JSONResult(T data, String message, int status, boolean success){
        this.data = data;
        super.setMessage(message);
        super.setCode(status);
        super.setSuccess(success);
    }

    /**
     * @Description: 自定义返回结果集
     * ------------------------
     * @Author: Li.HuiNeng
     * @Date: 2019/8/13
     */
    public JSONResult(T data, String message, boolean success){
        this.data = data;
        super.setMessage(message);
        super.setSuccess(success);
    }


}
